6.1.0 テストツールの種類
6.1.2 テストツールの分類
商業的な提供形態での分類
パッケージやライセンスを販売しているもの
無料配布の製品
オープンソース
単一の目的のみか、テストプロジェクトを包括するか
ツールの選択が、生産性や安全性に大きな意味を持つ
同じような目的のツールでも、ツールの特性の影響でテスト結果となる数値に違いが出ることがある
実行方式の違い、判定タイミングなどの計測の仕様の違い
6.1.3 テストマネジメントの支援用ツール
テストプロジェクトのマネージャーやリーダーを支援する
作成したテストケースがテスト要件を満たしているかがわかる
実績を管理することでプロジェクトのリスクを把握することができる プロジェクトの要件管理
作成や承認など担当者によるワークフローを提供する
例はこちらもTestLink
インシデントの統合的な管理
概要、発生日、アプリのバージョン、環境情報(サーバー、OS)、ユーザへのインパクト
回収状況、その後の検証状況もトラッキング
BTSがこれに当たる
オープンソースだとMantis, Bugzillaなど
テストウェアも体系的な状態で分類し、バージョン管理することが求められる まぁ……GitHubだよね。
テキストにはCVSとかSubversionとか書いてあったけど。
6.1.4 静的テスト支援ツール
開催状況、種類、参加者、指摘、コメント、レビュー対象などを記録
プロジェクト内に共有する
オープンソースだとReviewBoardなど
RedmineやTracでもそのような使い方ができる
とはいえ今はGitHub?
プログラム中の問題をツールで検出する
規約違反、使わないインスタンス、到達不可能なコードなど
FindBugsやCheckStyleが代表
クラス図書いたり
書くことで不整合がないかをチェックできる
6.1.5 テスト仕様の支援ツール
組み合わせを作るとか
PictMasterなどが代表
データベースやファイルからテストデータを作成する
セキュリティ的に使えない情報をマスキングしてくれるとか
6.1.6 テスト実行と結果記録の支援ツール
必要なスクリプトを自動生成することもできる……
私はこれをアテにできないと思っています
メンテナンスコストはかかります
Seleniumが代表
ドライバやスタブを含むテスト環境の一種
ドライバ=呼び出し元がいない場合、必要なパラメータを与えて呼び出しをするもの スタブ=呼び出し先がいない場合、必要な戻り値を返してくれるもの 近年にはIDEに組み込まれている例もある
テスト期待値と値、ファイル、データベースなどとの比較、検証を行う
多くの場合、ユニットテストフレームワークに内包されている
ソフトウェアのセキュリティを評価する
ファイヤーウォールソフトなど
セキュリティの健全性を保持する目的
Webアプリケーションのみが内部のファイルにアクセスできるように設定するなど
6.1.7 性能・モニタリング支援ツール
ソースコード実行中に発生する欠陥を摘出する
メモリの割り当てや解放に関する問題
マルチスレッドの並列処理に起因する問題
AndroidだとLeaksとか?
それぞれが同じテストを目的として使用できる
性能テストツールに実装したテスト内容を変更して、ロードテスト・ストレステストができる
アプリケーションの処理能力の計測が目的の一つ
継続して動作できているかの確認もこれらで実施できる
JMeterが代表
補助的なツールです
動作中のアプリをモニタリングしながら同時にシステムリソースをモニタリング
外部のライブラリや過去のコンポーネントを使うため、静的解析ができない場合に有効
高負荷な処理がないか、メモリリークがないか
性能テスト・ロードテスト・ストレステストツールに内包される
6.1.8 特定のテストに対する支援ツール
データの変換や移行が正しく行われているかを検証する
データウェアハウスなどが使用するデータの検証をする
マウス操作、キーボード操作をトラッキング
使用しやすいUIが提供できているか分析する